package com.xiaoshuidi.cloud.framework.filings.core.service.dto;

import com.xiaoshuidi.cloud.framework.filings.core.enums.CodeTypeEnum;
import com.xiaoshuidi.cloud.framework.filings.core.enums.ContractStatusEnum;
import com.xiaoshuidi.cloud.framework.filings.core.enums.ExpenseMattersEnum;
import com.xiaoshuidi.cloud.framework.filings.core.enums.PaymentCycleEnum;
import lombok.Data;

import java.util.List;

/**
 * @description 房源签约合同信息同步
 * @author Ivan.Wu
 * @date 2023/4/25 14:09
 */
@Data
public class ContractSigningBo {

    /**
     * 合同编号
     * 企业平台内唯一
     */
    private Long uniqueContractId;

    /**
     * 租赁房源唯一标识
     * 租赁平台内唯一
     */
    private Long houseId;

    /**
     * 房源出租类型
     * 1-整租 2-合租
     */
    private Integer leaseMode;

    /**
     * 合租房间 ID
     * （来源房源合租核验码申请）
     * 当出租方式取 2 时，必传
     */
    private Long roomId;

    /**
     * 房间面积
     */
    private Double houseArea;

    /**
     * 出租人姓名
     */
    private String lessorName;

    /**
     * 出租人证件类型
     * @see CodeTypeEnum
     * 1-居民身份证，2-社会统一信用代码，3-组织机构代码证，9-其他
     */
    private Integer lessorCardType;

    /**
     * 出租人证件号码
     */
    private String lessorCardNo;

    /**
     * 出租人联系电话
     */
    private String lessorMobile;

    /**
     * 出租人通讯地址
     */
    private String lessorAddress;

    /**
     * 承租人姓名
     */
    private String lesseeName;

    /**
     * 承租人证件类型
     * @see CodeTypeEnum
     * 1-居民身份证，2-社会统一信用代码，3-组织机构代码证，9-其他
     */
    private Integer lesseeCardType;

    /**
     * 承租人证件号码
     */
    private String lesseeCardNo;

    /**
     * 承租人联系电话
     */
    private String lesseeMobile;

    /**
     * 承租人通讯地址
     */
    private String lesseeAddress;

    /**
     * 同住人信息-支持多组
     * 可为空
     */
    private List<Cotenant> cotenants;


    /**
     * 租赁开始时间
     * （2020-09-17）
     */
    private String leaseDateStart;

    /**
     * 租赁结束时间
     */
    private String leaseDateEnd;

    /**
     * 交付时间
     */
    private String houseDeliverDate;

    /**
     * 承租人续租提前通知天数
     */
    private Integer reletAdvanceDay;

    /**
     * 合同总金额
     */
    private Double rentAmount;

    /**
     * 押金金额
     */
    private Double foregiftAmount;

    /**
     * 支付周期
     * @see PaymentCycleEnum
     * 1-押一付一，2-押一付三，3-押二付三，4-押三付三，5-押一付六，6-押二付六，7-押三付六，
     * 8-押一付一年，9-押二付一年，10-押三付一年，11-押一付二，12-押二付二，13-押三付二
     */
    private Integer rentPayCycle;

    /**
     * 租金包含费用事项包含多个费用事项请用英文逗号隔开，如：1,2,3,4,5
     * @see ExpenseMattersEnum
     * 1-水费，2-电费，3-电话费，4- 电视收视费，5-供暖费，6-燃气费，7-物业管理费，8-卫生费，9-宽带费，10-车位费，11-室内设施维修费
     */
    private String costBearLessee;

    /**
     * 承租人违约金占月租金比例
     */
    private Integer lesseePenalty;

    /**
     * 出租人违约金占月租金比例
     */
    private Integer lessorPenalty;

    /**
     * 自定义合同条款内容（双方约定的其他事项）
     * 可为空
     */
    private String contractClauseCustom;

    /**
     * 合同签订地址
     * 可为空
     */
    private String contractSignAddress;

    /**
     * 合同双方持有合同份数
     */
    private String contractNumOnePart;

    /**
     * 合同签订电子文件（PDF）
     * 附件系统返回
     */
    private String contractPDF;

    /**
     * 合同状态
     * @see ContractStatusEnum
     * 1-合同签订，2-合同变更，3-合同退租，4-合同失效，5-合同到期
     */
    private Integer statusCode;

    /**
     * 经纪人密钥编号（中心提供）
     */
    private String secretKey;

    /**
     * 租赁用途（居住/办公/经营/其他）
     */
    private String houseUse;

    /**
     * 合同月租金
     */
    private Integer monthlyRent;

    @Data
    public static class Cotenant {

        /**
         * 同住人姓名
         */
        private String name;

        /**
         * 同住人证件类型
         * @see CodeTypeEnum
         * 1-居民身份证，2-社会统一信用代码，3-组织机构代码证，9-其他
         */
        private Integer cardType;

        /**
         * 同住人证件号码
         */
        private String cardNO;

        /**
         * 同住人联系电话
         */
        private String mobile;
    }
}
